package com.sayyi.demo.bean.copy.mapstruct;

import com.sayyi.demo.bean.domain.Dest;
import com.sayyi.demo.bean.domain.DestWrapper;
import com.sayyi.demo.bean.domain.Source;
import com.sayyi.demo.bean.domain.SourceWrapper;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;

/**
 * @author xuchuang
 * date 2021/12/29 2:03 PM
 */
@Mapper
public interface SourceWrapperMapper {

    SourceWrapperMapper INSTANCE = Mappers.getMapper(SourceWrapperMapper.class);

    /**
     *  仅申明这个方法，就已经可以支持深度拷贝了，可以自动进行各种映射
     *  进行转换时，首先会在这个接口中查找是不是有对应类型的转换，如果有，就使用，否则，自动生成
     * @param sourceWrapper
     * @return
     */
    @Mapping(target = "name", source = "wrapperName")
    @Mapping(target = "dests", source = "sources")
    DestWrapper sourceWrapperToDestWrapper(SourceWrapper sourceWrapper);

    Dest sourceToDest(Source source);

    default String mapString(int value) {
        return "00" + value;
    }
}
